feat: batching execution (single iterator queries)#390
Conversation
|
@seqbenchbot up main search-keyword-exact-match-warm |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #390 +/- ##
==========================================
+ Coverage 70.66% 70.73% +0.07%
==========================================
Files 219 220 +1
Lines 17071 17183 +112
==========================================
+ Hits 12063 12155 +92
- Misses 4106 4124 +18
- Partials 902 904 +2 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
🔴 Performance DegradationSome benchmarks have degraded compared to the previous run. Show table
|
|
@seqbenchbot down 73ed4722 |
|
Nice, @cheb0 The benchmark with identificator Show summary
Have a great time! |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
🔴 Performance DegradationSome benchmarks have degraded compared to the previous run. Show table
|
# Conflicts: # frac/processor/search.go
🔴 Performance DegradationSome benchmarks have degraded compared to the previous run. Show table
|
Description
No significant perf improvement, just introduce new types:
LIDBatch,BatchedNode. Batch mode enabled for single-iterator queries for sealed fractions.iterateEvalTreeis now works with batches. For one-by-one lid we batch them a bit, for batched flow we just bypass batches as is. To batch one-by-one eval tree lids, a buffer is used. It preallocated with 64k slots.LIDBatchcurrently stores lids as[]uint32sorted asc. I had to introduce an unneeded copying from LID batch format to slice ofnode.LIDso that we have a single iterateEvalTree function. It's a cost of avoiding code duplication.single-iterator query perf
For single-iterator query we transfer batches directly. Hot query perf
service:X(hist, total is 1.6 million):main branch:
29.578 ms
PR:
23.854 ms
stopwatch eval_tree_next fixed
As part of the PR, stopwatch usage for
eval_tree_nextis adrressed. For low-cardinality queryservice:X AND level:4(histogram) it reports the following numbers:Search (hot) completed. Found 100 documents. Took: 15.812 ms
total >> iterate_eval_tree >> eval_tree_next -> 95.407644ms
With this PR:
Search (hot) completed. Found 100 documents. Took: 13.958 ms
total >> iterate_eval_tree >> eval_tree_next -> 5.5113ms
Part of #329